1、股票的最大利润
思想：定义一个min表示最小价值的天数，max=max（a[i]-min,max）循环遍历一次，就可以找到max
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.empty())
            return 0;
        int m=prices[0];
        int len=prices.size();
        int ret=0;
        for(int i=0;i<len;i++)
        {
            m=min(prices[i],m);
            ret=max(ret,prices[i]-m);
            if(ret<0)
                ret=0;
        }
        return ret;
    }
};

2、礼物的最大值
思想：动态规划
f(i,j)=max(f(i-1,j),f(i,j-1))+a[i-1][j-1]
class Solution {
public:
    int maxValue(vector<vector<int>>& grid) {
        if(grid.empty())
            return 0;
        int m=grid.size();
        int n=grid[0].size();
        vector<vector<int>> v(m+1,vector<int>(n+1,0));
        //初始化
        for(int i=1;i<=m;i++)
        {
            v[i][1]=v[i-1][0]+grid[i-1][0];
        }
        for(int i=1;i<=n;i++)
        {
            v[1][i]=v[1][i]+grid[0][i-1];
        }

        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)
            {
                v[i][j]=max(v[i-1][j],v[i][j-1])+grid[i-1][j-1];
            }
        }   
        return v[m][n];
    }
};

